package View;
import Model.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

import Controller.Sistema;
import Model.ClienteView;

public class frmMainFrame extends javax.swing.JFrame {

	private static String titulo = "Sistema de alquiler de autos";
	private static final long serialVersionUID = 1L;
	private JMenu jMenuSalir;	
	private JMenuItem crearReservaMenuItem;
	private JMenuItem consultarReservaMenuItem;
	private JMenuItem devolucionAlquilerMenuItem;
	private JMenuItem confirmarAlquilerMenuItem;
	private JMenuItem salirMenuItem;
	private JMenu jMenuReserva;	
	private JMenuItem clientesMenuItem;
	private JMenuItem autosMenuItem;
	private JMenuItem tiposMenuItem;
	private JMenuItem promocionesMenuItem;
	private JMenuItem cancelarReservaMenuItem;	
	private JMenu jMenuABM;
	private JMenu jMenuABM2;
	private JMenuItem ModificarDatos;
	private JMenuBar jMenuBar1;
	private JMenu jMenuAlquiler;
	private JMenuItem crearAlquilerMenuItem;
	private Sistema miSistema;		
	private ClienteView clienteConectado;
	private Boolean esOperador;
	
	public  ClienteView getClienteConectado(){
		return clienteConectado;
	}
	public  Boolean getEsOperadorConectado(){
		return esOperador;
	}
	
	public  void setClienteConectado(ClienteView cliente){
		this.clienteConectado = cliente;
	}
	public  void setEsOperadorConectado(Boolean operador){
		this.esOperador=operador;
	}

	/**
	* Auto-generated main method to display this JFrame
	*/
	
	public frmMainFrame(Boolean operador, ClienteView cliente) {
		super(titulo);
		this.esOperador=operador;
		this.clienteConectado = cliente;		
		miSistema = Sistema.getSistema();
		initGUI();
		setMenu();
	}
	
	
	private void initGUI() {
		try 
		{
			setSize(800, 600);
			
			    jMenuBar1 = new JMenuBar();
				jMenuBar1 = new JMenuBar();
				setJMenuBar(jMenuBar1);				
				
				//ABM2
				jMenuABM2= new JMenu();
				jMenuBar1.add(jMenuABM2);
				jMenuABM2.setText("ABM");
				
			
				
						
				
				//ABM
				jMenuABM = new JMenu();
				jMenuBar1.add(jMenuABM);
				jMenuABM.setText("ABM");
					
						
				
				clientesMenuItem = new JMenuItem();
				jMenuABM.add(clientesMenuItem);
				clientesMenuItem.setText("Clientes");
					
				autosMenuItem = new JMenuItem();
				jMenuABM.add(autosMenuItem);
				autosMenuItem.setText("Autos");
					
				tiposMenuItem = new JMenuItem();
				jMenuABM.add(tiposMenuItem);
				tiposMenuItem.setText("Tipos");
				
				promocionesMenuItem = new JMenuItem();
				jMenuABM.add(promocionesMenuItem);
				promocionesMenuItem.setText("Promociones");
					
				//RESERVAS
				jMenuReserva = new JMenu();
				jMenuBar1.add(jMenuReserva);
				jMenuReserva.setText("Reserva");
			
				crearReservaMenuItem = new JMenuItem();
				jMenuReserva.add(crearReservaMenuItem);
				crearReservaMenuItem.setText("Nueva");
			
				consultarReservaMenuItem = new JMenuItem();
				jMenuReserva.add(consultarReservaMenuItem);
				consultarReservaMenuItem.setText("Consultar");
				
				cancelarReservaMenuItem = new JMenuItem();
				jMenuReserva.add(cancelarReservaMenuItem);
				cancelarReservaMenuItem.setText("Cancelar");

				//RESERVAS
				jMenuAlquiler = new JMenu();
				jMenuBar1.add(jMenuAlquiler);
				jMenuAlquiler.setText("Alquileres");
				
				crearAlquilerMenuItem = new JMenuItem();
				jMenuAlquiler.add(crearAlquilerMenuItem);
				crearAlquilerMenuItem.setText("Nuevo");	
				
				confirmarAlquilerMenuItem = new JMenuItem();
				jMenuAlquiler.add(confirmarAlquilerMenuItem);
				confirmarAlquilerMenuItem.setText("Confirmnar");
				
				devolucionAlquilerMenuItem = new JMenuItem();
				jMenuAlquiler.add(devolucionAlquilerMenuItem);
				devolucionAlquilerMenuItem.setText("Devolucion");

				ModificarDatos = new JMenuItem();
				jMenuABM2.add(ModificarDatos);
				ModificarDatos.setText("Modificar Mis Datos");
				
				crearAlquilerMenuItem.addActionListener(new ActionListener() {			
					@Override
					public void actionPerformed(ActionEvent arg0) {
						// TODO Auto-generated method stub					 	
						frmAlquiler alq = new frmAlquiler(AlquilerViewConstants.NUEVO);
						alq.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
						alq.setVisible(true);

					}
				});
				
				confirmarAlquilerMenuItem.addActionListener(new ActionListener() {			
					@Override
					public void actionPerformed(ActionEvent arg0) {
						// TODO Auto-generated method stub					 	
						frmAlquiler alq = new frmAlquiler(AlquilerViewConstants.CONFIRMAR);
						alq.setVisible(true);
							
					}
				});
				
				devolucionAlquilerMenuItem.addActionListener(new ActionListener() {			
					@Override
					public void actionPerformed(ActionEvent arg0) {
						// TODO Auto-generated method stub								
						frmAlquiler alq = new frmAlquiler(AlquilerViewConstants.DEVOLUCION);
						alq.setVisible(true);
							
					}
				});
				
				//Listeners RESERVAS
				crearReservaMenuItem.addActionListener(new ActionListener() {			
					@Override
					public void actionPerformed(ActionEvent arg0) {
						// TODO Auto-generated method stub					 	
						frmReserva res = new frmReserva(ReservaViewConstants.NUEVA, getClienteConectado(), getEsOperadorConectado());
						res.setVisible(true);
							
					}
				});
				
				consultarReservaMenuItem.addActionListener(new ActionListener() {			
					@Override
					public void actionPerformed(ActionEvent arg0) {
						// TODO Auto-generated method stub					 	
						frmReserva res = new frmReserva(ReservaViewConstants.BUSCAR, getClienteConectado(), getEsOperadorConectado());
						res.setVisible(true);
							
					}
				});
				cancelarReservaMenuItem.addActionListener(new ActionListener() {			
					@Override
					public void actionPerformed(ActionEvent arg0) {
						// TODO Auto-generated method stub					 	
						frmReserva res = new frmReserva(ReservaViewConstants.CANCELAR, getClienteConectado(), getEsOperadorConectado());
						res.setVisible(true);
							
					}
				});
				
				clientesMenuItem.addActionListener(new ActionListener() {			
					@Override
					public void actionPerformed(ActionEvent arg0) {
						// TODO Auto-generated method stub					 	
					MenuCliente mnclnt = new MenuCliente ();
					mnclnt.setVisible(true);
					
							
					}
				});
				
				ModificarDatos.addActionListener(new ActionListener () {
					@Override
					public void actionPerformed(ActionEvent arg0) {
						ModificarCliente mf = new ModificarCliente();
						mf.setVisible(true);
					}
				});
			
				autosMenuItem.addActionListener(new ActionListener() {			
					@Override
					public void actionPerformed(ActionEvent arg0) {
						// TODO Auto-generated method stub					 	
					MenuAutomovil ma = new MenuAutomovil();
					ma.setVisible(true);
					
					
							
					}
				});
				promocionesMenuItem.addActionListener(new ActionListener() {			
					@Override
					public void actionPerformed(ActionEvent arg0) {
						// TODO Auto-generated method stub					 	
					frmPromocion frmProm = new frmPromocion ();
					frmProm.setVisible(true);
					
							
					}
				});
				
				tiposMenuItem.addActionListener(new ActionListener() {			
					@Override
					public void actionPerformed(ActionEvent arg0) {
						// TODO Auto-generated method stub					 	
					 AdmTipo  admtipo = new AdmTipo();
					  admtipo.setVisible(true);
					  dispose();
					}
				});				
				
				//SALIR
				jMenuSalir = new JMenu();
				jMenuBar1.add(jMenuSalir);
				jMenuSalir.setText("Mi cuenta");
				
				salirMenuItem = new JMenuItem();
				jMenuSalir.add(salirMenuItem);
				salirMenuItem.setText("Salir");
				
				//Listener SALIR				
				salirMenuItem.addActionListener(new ActionListener() {			
							@Override
							public void actionPerformed(ActionEvent arg0) {
								// TODO Auto-generated method stub
								dispose();
							}
						});
						
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	private void setMenu()
	{
		if (this.getEsOperadorConectado())
		{
			jMenuABM.setVisible(true);
			jMenuABM2.setVisible(false);
			jMenuReserva.setVisible(true);
			jMenuAlquiler.setVisible(true);
			crearReservaMenuItem.setVisible(false);
			cancelarReservaMenuItem.setVisible(false);

		}
		else
		{
			if (this.getClienteConectado()!=null)
			{
				jMenuABM.setVisible(false);
				jMenuReserva.setVisible(true);
				jMenuAlquiler.setVisible(false);
			    jMenuABM2.setVisible(true);
			}

		}
		
	}

}
